package Estruturas;

import java.util.LinkedList;

public class Mascara {

    private LinkedList<int[][]> operador1;
    private LinkedList<int[][]> operador2;

    public Mascara()
    {
        operador1 = new LinkedList<int[][]>();
        operador2 = new LinkedList<int[][]>();
       
        iniciarMascaras();
    }

    private void iniciarMascaras(){
        int[][] mascara1 = {{0,0,0},
                            {-1,0,-1},
                            {1,1,1}};
        int[][] mascara2 = {{-1,0,-1},
                            {1,0,0},
                            {1,1,-1}};

        operador1.add(mascara1);
        girar3xOperador1();
        operador1.add(mascara2);
        girar3xOperador1();

        int[][] mascara3 = {{1,-1,-1},
                            {1,0,1},
                            {1,1,1}};

        int[][] mascara4 = {{-1,-1,1},
                            {1,0,1},
                            {1,1,1}};

        operador2.add(mascara3);
        girar3xOperador2();
        operador2.add(mascara4);
        girar3xOperador2();
    }

    public LinkedList<int[][]> getOperador() {
        return operador1;
    }

    public void girar3xOperador1(){
        operador1.add(girar90graus(operador1.getLast()));
        operador1.add(girar90graus(operador1.getLast()));
        operador1.add(girar90graus(operador1.getLast()));

    }
    public void girar3xOperador2(){
        operador2.add(girar90graus(operador2.getLast()));
        operador2.add(girar90graus(operador2.getLast()));
        operador2.add(girar90graus(operador2.getLast()));

    }

    public int[][] girar90graus(int[][] mascara){
        int[][] mascTemp = new int[3][3];

        for (int x = 0; x < 3; x++) {
            for (int y = 0; y < 3; y++) {
               mascTemp[y][2-x]=mascara[x][y];
            }
        }
        return mascTemp;
    }
    
    public int size(){
        return operador1.size();
    }

    public int[][] getOperador1(int i) {
        return operador1.get(i);
    }

    public int[][] getOperador2(int i) {
        return operador2.get(i);
    }

    public LinkedList<int[][]> getMascaras1() {
        return operador1;
    }

    public LinkedList<int[][]> getMascaras2() {
        return operador2;
    }


}

